import Vue from 'vue';
import App from './App.vue';
import router from './router';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import './assets/css/icon.css';
import './components/common/directives';
import 'babel-polyfill';
import axios from 'axios'
import has from './permission';
Vue.prototype.$axios = axios

import Http from './utils/http.js'
Vue.prototype.$Http = Http

axios.defaults.withCredentials = true; //让ajax携带cookie
// axios.defaults.baseURL = '/api'
//Vue.prototype.$baseUrl = 'http://47.104.226.136'
Vue.prototype.$baseUrl = 'http://localhost:8080'
// 时间编辑
import moment from "moment";
Vue.filter("currentTime", value => {
    return moment(value).format("YYYY-MM-DD");
});
Vue.config.productionTip = false;
Vue.use(ElementUI, {
    size: 'small'
});

var addRouFlag = false
//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
	    document.title = `${to.meta.title} | vue-manage-system`;
	    const role = localStorage.getItem('ms_username');
	    console.log('role=',role);
	    if (!role && to.path !== '/login') {
	        next('/login');
	    } else if (to.meta.permission) {
	        // 如果是管理员权限则可进入，这里只是简单的模拟管理员权限而已
	        role === 'admin' ? next() : next('/403');
	    } else {
	        // 简单的判断IE10及以下不进入富文本编辑器，该组件不兼容
	        if (navigator.userAgent.indexOf('MSIE') > -1 && to.path === '/editor') {
	            Vue.prototype.$alert('vue-quill-editor组件不兼容IE10及以下浏览器，请使用更高版本的浏览器查看', '浏览器不兼容通知', {
	                confirmButtonText: '确定'
	            });
	        } else {
	            next();
	        }
	    }
/*
	// 取到用户的角色
	let GetLevel = localStorage.getItem("level")

	// 如果登录了
	if(GetLevel && GetLevel !== 'unload') {
		next() //next()方法后的代码也会执行
			// 1.如果路由表 没根据角色进行筛选,就筛选一次
		if(!addRouFlag) {
			addRouFlag = true
			console.log("allRoutes=",permissionRouter.length);
				// 2.根据用户的角色、和需要动态展示的路由，生成符合用户角色的路由
			var getRoutes = baseRoleGetRouters(permissionRouter, GetLevel.split(","))
				// 3.利用global属性，让渲染菜单的组件sideMeuns.vue重新生成左侧菜单
			global.antRouter = getRoutes
				// 4.将生成好的路由addRoutes
			router.addRoutes(getRoutes)
				// 5.push之后，会重新进入到beforeEach的钩子里,直接进入第一个if判断
			router.push({
				path: to.path
			})
		}
	} else {
		// 用户没登录，跳转到登录页面
		if(to.path === '/') {
			next()
		} else {
			next('/')
		}
	}*/

});


function hasPermission(route, roles) {
  if (route.meta && route.meta.levels) {
    return levels.some(role => route.meta.levels.indexOf(role) >= 0)
  } else {
    return true
  }
}
// 根据用户的角色取到该用户对应的路由
function baseRoleGetRouters(allRoutes, roles) {
  // allRoutes是动态路由表
  // roles是取到的用户角色，数组
  console.log("allRoutes=",allRoutes.length);
  let rightRoutes = allRoutes.filter((route, index) => {
    if (hasPermission(route, roles)) {
      if (route.children && route.children.length) {
        route.children = baseRoleGetRouters(route.children, roles)
      }
      return true
    }
    return false
  })
  return rightRoutes
}

new Vue({
    router,
    render: h => h(App)
}).$mount('#app');
